package club.terroir.client;



import javax.swing.event.MenuListener;

import club.terroir.client.producteur.AchatCreateGUI;
import club.terroir.client.producteur.AchatsListGUI;
import club.terroir.client.producteur.AttenteGUI;
import club.terroir.client.producteur.Contact;
import club.terroir.client.producteur.ContactCreateGUI;
import club.terroir.client.producteur.ContactFactory;
import club.terroir.client.producteur.ContactsListGUI;
import club.terroir.client.producteur.ProduitListGUI;
import club.terroir.client.producteur.Utilisateur;
import club.terroir.client.produit.FolderFactory;


import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.InlineHyperlink;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;



public class ControlerClubAdmin  {

	public static String TAG_ROOT_PANEl="listClients";
	public static String TAG_UserName ="UserName";
	
	static public ControlerClubAdmin instance;

	Utilisateur utilisateur ;
	ContactsListGUI clientListGUI = ContactsListGUI.instance;
	ContactCreateGUI clientCreateGUI = ContactCreateGUI.instance;
	AchatsListGUI achatListGUI = AchatsListGUI.instance;
	ProduitListGUI produitListGUI = ProduitListGUI.instance;
	public AchatCreateGUI achatCreateGUI = AchatCreateGUI.instance;
	VerticalPanel panelGlobal = new VerticalPanel();
	VerticalPanel vPanel = new VerticalPanel();
	
	public ControlerClubAdmin() {
		super();
		ContactFactory.instance.initListContacts();
		FolderFactory.instance.initRoot();
		
		//Widget navigationBarre = this.getNavBar();
		//this.panelGlobal.add(navigationBarre);
		this.panelGlobal.add(this.vPanel);
		this.vPanel.add(AttenteGUI.instance);
		this.vPanel.setStyleName(Style.VPanelBody);
		Club_terroir.greetingService.getUtilisateurCurrent(new AsyncCallback<Utilisateur>() {
			
			@Override
			public void onSuccess(Utilisateur result) {
				utilisateur =result;
				setUtilisateur(result);
			}
			
			@Override
			public void onFailure(Throwable caught) {
				utilisateur=null;
				
			}
		});
	}



	@SuppressWarnings({ "deprecation", "deprecation" })
	public void onModuleLoad() {
		instance = this;
		RootPanel rootPanel = RootPanel.get(TAG_ROOT_PANEl);
		rootPanel.add(panelGlobal);
		
		RootPanel rootMenuLogout =  RootPanel.get("menuLogOut");
		Hyperlink linkMenuLogout = new InlineHyperlink("Logout","" );
		linkMenuLogout.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				logout();
			}
		});
		rootMenuLogout.add(linkMenuLogout);

		/////
		RootPanel rootMenuListClients =  RootPanel.get("menuListeClients");
		Hyperlink linkMenuListClients = new InlineHyperlink("List Clients","" );
		linkMenuListClients.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				displayListeClients();
			}
		});
		rootMenuListClients.add(linkMenuListClients);

		/////
		RootPanel rootMenuNouvelAchat =  RootPanel.get("menuNouvelAchat");
		Hyperlink linkMenuNouvelAchat = new InlineHyperlink("Nouvel achat","" );
		linkMenuNouvelAchat.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				displayNouvelAchat(null);
			}
		});
		rootMenuNouvelAchat.add(linkMenuNouvelAchat);
		/////
		RootPanel rootMenuProduits =  RootPanel.get("menuProduits");
		Hyperlink linkMenuProduit = new InlineHyperlink("Produits","" );
		linkMenuProduit.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				displayListProduit();
			}
		});
		rootMenuProduits.add(linkMenuProduit);
		
		
	}
	
	public void logout() {
		Window.open("/prod?action=logout", "", "");
	}

	public void displayAttente() {
		this.vPanel.remove(0);
		this.vPanel.add(AttenteGUI.instance);
	}


	public void displayCreateClient() {
		this.vPanel.remove(0);
		this.vPanel.add(clientCreateGUI);
	}


	public void displayListeClients() {
		this.vPanel.remove(0);
		this.vPanel.add(clientListGUI);
	}

	public void displayAchatsClient(Contact contact) {
		this.vPanel.remove(0);
		achatListGUI.setContactInfo(contact);
		this.vPanel.add(achatListGUI);
	}


	public void displayNouvelAchat(Contact contact) {
		this.vPanel.remove(0);
		this.achatCreateGUI.setContactInfo(contact);
		this.vPanel.add(achatCreateGUI);
	}


	public void displayListProduit() {
		this.vPanel.remove(0);
		this.vPanel.add(produitListGUI);
	}

	
	
	private void setUtilisateur(Utilisateur u){
		if (u == null){
			return;
		}
		RootPanel rootUser =  RootPanel.get(TAG_UserName);
		Label labelUser = new InlineLabel();
		labelUser.setText(u.getEmail());
		rootUser.add(labelUser);

	}



	public void log(String s) {
		System.out.println("---- "+s);
	}
	
}
